{

/*
    1. 如果要实现一个类的属性控制，也使用接口
    2. 使用了接口，属性只能多不能少
    3. 类实现接口的声明使用  implements
    4. 多个接口使用 逗号实现
    5. 如果接口有重复的部分，可以再设计一个接口进行继承
*/


interface Public {
    uname: string,
    uage: number,
}

// 使用接口定义类
interface BoyFriend extends Public {
    gender: string;
}

interface Actor extends Public {
    isPop: boolean;
    type: string[];
}

// ['ɪmplɪmənts] 
class Person implements BoyFriend, Actor {
    uname: string;
    uage: number;
    gender: string;
    isPop: boolean;
    type: string[];
    data: object;

    constructor(
        name: string, 
        age: number, 
        gender: string,
        isPop: boolean,
        type: string[],
        data: object
        ) {
        this.uname = name;
        this.uage = age;
        this.gender = gender;
        this.isPop = isPop;
        this.type = type;
        this.data = data
    }
}

const p1 =  new Person('迪丽热巴', 20, '女', true, ['电影', '电视'], {
    a: 10, b: 20
})

console.log(p1);


}